home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <exec/exec.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include "dh1:source/doors/romconf/doorheader.h"
- #include "code:express.h"
- struct Commands Cmds;
- #define SM sendmessage
- #define sm sendmessage
- #define pm prompt
- #define PM prompt
- #define HK hotkey
- #define hk hotkey
- #define GU getuserstring
- #define sr StripReturn
- char Date[12];
- char MenuLocal[]="DOORS:AEShell/Menu";
- void end();
- void GetLocal();
- void MoveIt();
- void DeleteIt();
- void CopyIt();
- void ListIt();
- void Help();
- void ViewIt();
- void DeterAccess();
- void MoveToNode();
- void RenameIt();
- void MakeIt();
- void DisplayError();
- void StripReturn();
- void ViewDesc();
- char MasterFile[200];
- int Reserved(char *Str,char Filter[]);
- int MakeU=0;
- int MakeH=0;
- int Yes=0;
- void FlagThem();
- void MarkNumbers(char *str);
- long NumList[2000];
- int NumChoose[2000];
- void main(int argc,char *argv[]);
- void ConvertDate(long);
- void LastCommand(void);
- void main(int argc,char *argv[])
- {
- char CMD[200];
- char CD[200];
- char conf[200];
- char BBS[200];
- FILE *fi;
- int i=0;
- if(argc!=2)
- {
- printf("FlagShort v1.1, written by Joseph Hodge\n");
- printf("Compatible with AmiExpress v1.1u+\n");
- printf("This is a type 'X' door.\n");
- exit(0);
- }
- Register(argv[1][0]-'0');
- while(i<2000)
- {
- NumList[i]=-1L;
- NumChoose[i]=-1;
- i++;
- }
- GU(CMD,BB_LOCAL);
- strcpy(BBS,CMD);
- sprintf(CD,"%s>",CMD);
- strcat(CMD,"Config1");
- fi=fopen(CMD,"rb");
- fread((APTR)&Cmds,sizeof(struct Commands),1,fi);
- fclose(fi);
- SM("FlagShort v1.1 written by Joseph Hodge",1);
- ViewDesc();
- ShutDown();
- end();
- }
- void ViewDesc()
- {
- FILE *fi;
- char Dir[200];
- char FileName[200];
- int ndir;
- int Lines;
- long TheDate;
- int FoundDate;
- long NumberFiles=0L;
- int cline=0;
- long Position;
- long Ks;
- long timelast;
- long FileNum=0L;
- char Numbers[200];
- char Number[200];
- BOOL GoodDate=FALSE;
- strcpy(Numbers,"");
- GU(Dir,DT_TIMELASTON);
- timelast=atol(Dir);
- GU(Dir,DT_LINELENGTH);
- Lines=atoi(Dir);
- GU(Dir,BB_CONFLOCAL);
- strcat(Dir,"ndirs");
- fi=fopen(Dir,"r");
- if(fi==NULL)
- {
- sm("Files are not supported in this conference.",1);
- return;
- }
- fgets(Dir,80,fi); fclose(fi);
- ndir=atoi(Dir);
- sm("",1);
- sprintf(Dir,"There are %d Dir listings in this conference.",ndir);
- sm(Dir,1);
- sprintf(Dir,"Which Dir listing would you like to FlagFrom,<Q>, or [ENTER=%d] >:",ndir);
- sm(Dir,0);
- pm("",Dir,3);
- if(Dir[0]=='\0') sprintf(Dir,"%d",ndir);
-
- if(atoi(Dir)>ndir || atoi(Dir)<1 || Dir[0]=='Q' || Dir[0]=='q')
- {
-
- if(Dir[0]=='Q' || Dir[0]=='q') return;
- sm("",1);
- sm("That Dir listing does not exist!",1);
- return;
- }
- ndir=atoi(Dir);
- GU(Dir,BB_CONFLOCAL);
- sprintf(FileName,"%sdir%d",Dir,ndir);
- sm("",1);
- ConvertDate(timelast);
- sprintf(Dir,"Enter From Date mm-dd-yy or [ENTER=%s]>:",Date);
- pm(Dir,Date,8);
- if(Date[0]=='\0') ConvertDate(timelast);
- if(strlen(Date)==8)
- {
- TheDate=atol(&Date[6])*365L+atol(Date)*32L+atol(&Date[3]);
- }
- else { TheDate=0; GoodDate=TRUE;}
-
- fi=fopen(FileName,"r");
- if(fi==NULL)
- {
- sm("Error! Cannot locate that directory listing.",1);
- return;
- }strcpy(MasterFile,FileName);
- cline = Lines-3;
- Position=ftell(fi);
- sm(" num = Passed Test num = Test Not Required",1);
- sm("",1);
-
- while(fgets(Dir,180,fi)!=NULL)
- {
- if(!cline)
- {
- sm("Press [Return],Q)uit or FileNum seperated by commas",1);
- pm(">:",Number,200);
- if(Number[0]=='Q' || Number[0]=='q') { fclose(fi); break;}
-
- if(Number[0]!='\0')
- {
- MarkNumbers(Number);}
- cline=Lines-3;
-
- }
-
-
- sr(Dir);
-
- if(Dir[25]=='-' && Dir[28]=='-' && Dir[27]!='-')
- {
- FileNum +=1L;
- NumList[FileNum]=Position;
- Ks=atol(&Dir[14])/1000;
- if(Dir[13]=='P')
- sprintf(FileName,"%4d.%-13.13s%4dK%-9.9s%s",FileNum,Dir,Ks,&Dir[22],&Dir[32]);
- else
- sprintf(FileName,"%4d.%-13.13s%4dK%-9.9s%s",FileNum,Dir,Ks,&Dir[22],&Dir[32]);
-
- if(TheDate<=atol(&Dir[29])*365L+atol(&Dir[23])*32L+atol(&Dir[26]))
- GoodDate=TRUE;
- if(GoodDate){if(GoodDate)cline--;
- sm(FileName,1);}
- }
- Position=ftell(fi);
- }
- if(cline && GoodDate==TRUE)
- {
- sm("Press [Return],or FileNum seperated by commas",1);
- pm(">:",Number,200);
- if(Number[0]!='\0')
- {
- MarkNumbers(Number);}
- cline=Lines-3;
-
- }
-
- fclose(fi);
- if(Yes)
- {
- sm("Flagging Files, Please standby",1);
- FlagThem();
- }
- }
- void FlagThem()
- {
- register int i;
- FILE *fi;
- char image[200];
- char temp[200];
- long Position;
- fi=fopen(MasterFile,"rb");
- i=1; while(i<1000)
- {
- if(NumChoose[i]==1)
- {
-
- fseek(fi,NumList[i],SEEK_SET);
- fgets(image,13,fi);
- sr(image);
- sprintf(temp,"flagged file [%3d] %s",i,image);
- sm(temp,1);
- FlagFile(image);
- }
- i++;
- }
- fclose(fi);
- }
- void MarkNumbers(char *str)
- {
- char Number[200];
- register int i;
- register int j;
- register int k;
- long num;
- strcpy(Number,str);
- i=0;
- k=strlen(Number);
- j=1;
- while(i<k)
- {
- if(j) { num=atol(&Number[i]);
- if(num>0L && num<1000L)
- {
-
- if(NumList[num]>-1L)
- {
- NumChoose[num]=1; Yes=1;
- }
- }
- }
- if(Number[i]==',') j=1; else j=0;
- i++;
- }
- }
-
- void DeterAccess()
- {
- char NAME[200];
- char CMD[200];
- char FileName[200];
- char Password[200];
- FILE *fi;
- register int i=0;
- getuserstring(NAME,DT_NAME);
- strupr(NAME);
- strcpy(CMD,"DOORS:AEShell/CoSysops");
- strcpy(FileName,CMD);
- sm("Enter Password >:",0);
- strcpy(Password,"");
- i=0;
- do
- {
- hk("",CMD); strupr(CMD);
- if(CMD[0]!=13 && CMD[0]!='\0'){ strcat(Password,CMD);sm("X",0);}
- i++;
- }while(CMD[0]!=13 && CMD[0]!='\0' && i<20);
- sm("",1);
- fi=fopen(FileName,"r");
- if(fi==NULL)
- {
- SM("You are not a CoSysop for this Bulletin Board.",1);
- ShutDown();
- end();
- }
- strcat(NAME,"-");
- strcat(NAME,Password);
- while(fgets(CMD,80,fi)!=NULL)
- {
- StripReturn(CMD);
- strupr(CMD);
-
- if(!strcmp(NAME,CMD))
- {
- SM("Access Authenticated.",1);
- fclose(fi);
- return;
- }
- }
- fclose(fi);
- SM("Access Denied, Please consult the Sysop regarding Access.",1);
- ShutDown();
- end();
- }
-
- void StripReturn(char *str)
- {
- register int i;
- i=strlen(str);
- while(i>0)
- {
- if(*(str+i)<32) *(str+i)='\0'; else return;
- i--;
- }
- }
- void end()
- {
- exit(0);
- }
- void ConvertDate(long t)
- {
- struct tm *tp;
- int M,D,Y;
- long tg;
- char Day[4],Month[5],Year[3];
- char TheTime[27];
- tg=t;
- tp=localtime(&tg);
- sprintf(TheTime,"%s",asctime(tp));
- sprintf(Day,"%.2s",&TheTime[8]);
- sprintf(Month,"%.3s",&TheTime[4]);
- sprintf(Year,"%.2s",&TheTime[22]);
- D=atoi(Day);
- Y=atoi(Year);
-
- if(!strncmp(Month,"Jan",3)) M=1;
- if(!strncmp(Month,"Feb",3)) M=2;
- if(!strncmp(Month,"Mar",3)) M=3;
- if(!strncmp(Month,"Apr",3)) M=4;
- if(!strncmp(Month,"May",3)) M=5;
- if(!strncmp(Month,"Jun",3)) M=6;
- if(!strncmp(Month,"Jul",3)) M=7;
- if(!strncmp(Month,"Aug",3)) M=8;
- if(!strncmp(Month,"Sep",3)) M=9;
- if(!strncmp(Month,"Oct",3)) M=10;
- if(!strncmp(Month,"Nov",3)) M=11;
- if(!strncmp(Month,"Dec",3)) M=12;
- sprintf(Date,"%02d-%02d-%02d",M,D,Y);
- }
- void LastCommand(void)
- {
- }